package com.gengzp.mq.server.enums;

/**
 * @ClassName MqMessageStatusEnums
 * @Description 消息状态枚举类
 * @Author gengzp
 * @Date 2025/8/28 17:25
 */
public enum MqMessageStatusEnums {

    /**
     * 0：未消费（消息已生成但未被消费者拉取）
     */
    UNCONSUMED(0, "未消费"),

    /**
     * 1：消费中（消息已被消费者拉取，但未确认消费结果）
     */
    CONSUMING(1, "消费中"),

    /**
     * 2：消费成功（消费者已确认消息处理完成）
     */
    CONSUME_SUCCESS(2, "消费成功"),

    /**
     * 3：消费失败（消费者确认处理失败，或超过最大重试次数）
     */
    CONSUME_FAILED(3, "消费失败");

    /**
     * 状态编码
     */
    private final int code;

    /**
     * 状态描述
     */
    private final String desc;

    MqMessageStatusEnums(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public int getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 根据状态编码获取枚举实例
     *
     * @param code 状态编码
     * @return 对应的枚举实例，若未匹配则返回null
     */
    public static MqMessageStatusEnums getByCode(int code) {
        for (MqMessageStatusEnums status : values()) {
            if (status.code == code) {
                return status;
            }
        }
        return null;
    }

}
